#pragma once

#include "iostream"
#include "vector"
#include "algorithm"

using namespace std;
/*HJJ QQ479287006
 *给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库（比如 BigInteger）， 也不能直接将输入的字符串转换为整数形式。

 

示例 1：

输入：num1 = "11", num2 = "123"
输出："134"
示例 2：

输入：num1 = "456", num2 = "77"
输出："533"
示例 3：

输入：num1 = "0", num2 = "0"
输出："0"

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * */
/*
 *  6 9 9
 *  9 9
 *  ——————————
 *  5 9 0 1
 *
 * */
string addStrings(string num1, string num2) {
    reverse(num1.begin(), num1.end());
    reverse(num2.begin(), num2.end());

    int low1 = 0;
    int low2 = 0;

    string res = "";

    int lastdiv = 0;
    while (low1 < num1.size() && low2 < num2.size()) {

        int temp = ((num1[low1++] - '0') + (num2[low2++] - '0')) + lastdiv;
        int left = temp % 10;
        res.push_back(left + '0');
        lastdiv = temp / 10;
    }

    while (low1 < num1.size()) {
        int temp = (num1[low1++] - '0') + lastdiv;
        int left = temp % 10;
        res.push_back(left + '0');
        lastdiv = temp / 10;

    }

    while (low2 < num2.size()) {
        int temp = (num2[low2++] - '0') + lastdiv;
        int left = temp % 10;
        res.push_back(left + '0');
        lastdiv = temp / 10;

    }

    if (lastdiv > 0)
        res.push_back('0' + lastdiv);

    reverse(res.begin(), res.end());
    return res;

}